#include <bits/stdc++.h>
using namespace std;
// dp是所有的递增子序列里面，结尾数最小的 那个数
const int MAX = 1e5 + 5;
const int MAXA = 520; // 512是2的10次方，111111111=511
const int INF = 0x3f3f3f3f;
int a[MAX], dp[MAX];

int main()
{
	// 初始化状态数组
	memset(dp, INF, sizeof(dp));
	dp[0] = 0;

	// 录入数据
	int n;
	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> a[i];

	// 状态转移
	for (int i = 1; i <= n; i++)
		for (int j = 0; j <= MAXA; j++)
			if (dp[j] < a[i])
				dp[j ^ a[i]] = min(dp[j ^ a[i]], a[i]);

	// 统计状态数组内被更新过的元素
	vector<int> ans;
	for (int i = 0; i <= MAXA; i++)
		if (dp[i] != INF) // 只要dp不是无穷大，那dp[i]的i就压到ans里面
			ans.push_back(i);

	// 输出结果
	cout << ans.size() << endl;
	for (int val : ans)
		cout << val << " ";

	return 0;
}
